1
ヒープ確保コレクションの基礎
AI034Lesson 8
00:00

成長の構造

Rustのコレクション、たとえば Vec<T> および Stringは、基本型ではなく、ライブラリで定義された構造体です。これらは std モジュールに存在します。この基盤が、Rustがモジュールシステムを通じてデータをどのように整理し、 RAII(リソース取得は初期化)によってメモリを管理することを決定しています。単純な型はスタック上にありますが、コレクションは動的拡張のために ヒープストレージ を利用します。つまり、そのメモリは明示的に Drop トレイトを通じて管理する必要があります。

モジュール解決と可視性

Rustコンパイラは、クレートのルート(src/lib.rs または src/main.rs)から開始してモジュールツリーをマップします。たとえば mod front_of_house; という宣言は、コンパイラに src/front_of_house.rs または src/front_of_house/mod.rsを探すように指示します。 pub 修飾子と再エクスポート(pub use)を使用することで、カプセル化されたヒープ確保データを、自然なパス経由で安全にインターフェースできます。

ファイル解決ツリーsrc/lib.rssrc/front_of_house.rs– hosting.rspub use crate::front_of_house;let list = Vec::new();🦀?落とし穴:mod.rsとname.rsの競合コンパイラエラーを引き起こす(ページ183)

モジュールのスコープが終了すると、すぐに Drop 実装が自動的にヒープメモリを回収します:$$Memory_{reclaimed} = \sum Drop(Elements)$$。

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>